package DyingBaby.backend.catalog;

/**
 * 列定义类
 * 表示数据库表中单个列的完整属性定义（元数据）
 * 用于描述表结构中每个字段的名称、类型和约束信息
 */
public class ColumnDef {
    private final String name; // 列名
    private final ColumnType type; // 列的数据类型
    private final Integer maxLength; // 最大长度限制（仅对STRING类型有效，对INT类型可为null）

    /**
     * 构造函数：创建列定义
     * @param name 列名
     * @param type 列的数据类型
     * @param maxLength 最大长度限制（对STRING类型必需，对INT类型可为null）
     */
    public ColumnDef(String name, ColumnType type, Integer maxLength) {
        this.name = name;
        this.type = type;
        this.maxLength = maxLength;
    }

    /**
     * 获取列名
     * @return 列名称
     */
    public String getName() {
        return name;
    }

    /**
     * 获取列的数据类型
     * @return 列类型枚举值
     */
    public ColumnType getType() {
        return type;
    }

    /**
     * 获取列的最大长度限制
     * @return 最大长度值
     */
    public Integer getMaxLength() {
        return maxLength;
    }
} 